<?php
	/*
	 * Angebotsloeschung um die Datenbank sauber zu halten.
	 * 
	 * Eine Woche vor Ablauf der 3 Monate bekommt die Klinik eine E-Mail(enthaelt link zum verlaengern der lebenszeit des angebotes)
	 *     wenn nicht verlaengert wird, bekommt klinik noch eine mail mit der moeglichkeit zu verlaengern
	 *         wurde nach den drei monaten immer noch nicht verlaengert, wird das angebot geloescht und klinik bekommt info-mail
	 *
	 * Zudem werden jeden tag alle eingestellten Angebote gelöscht, deren Kliniken KEINEN bezahlaccount haben.
	 */

    //globale variablen
    include_once getcwd().'/globals.php';

	//datenbankverbindung - enthaelt globale variable connect 
	include_once SCRIPT_FILENAME.'/dbConnect.php';

	//zum versenden der Mails
	include_once SCRIPT_FILENAME.'/MyMail.php';

	$lastMail = 8035200;//3 monate in sekunden

	//43200 sekunden sind ein halber tag
	$secondMail = array('left' => 7084800 + 43200, 'right' => 7084800 - 43200);//3 monate - 2 tage in sekunden (7084800)

	$firstMail = array('left' => 6652800 + 43200, 'right' => 6652800 - 43200);//3 monate - 7 tage in sekunden (6652800)

//zum testen, ob cron greift
$mail = new MyMail();
$mail->test();


    //hole alle angebote, die aelter oder genau 3 Monate alt sind
    $sql = "WHERE kliniken.klinik_account = '0'";
    $rs = execute($sql, false, 'NoAccountMail');

    //loesche alle angebote, deren kliniken keinen bezahlaccount haben
    $sql = "DELETE angebot "
            ."FROM angebot "
            ."JOIN kliniken ON kliniken.klinik_id = angebot.klinik_id "
            ."WHERE kliniken.klinik_account = '0' ";
    //TODO: einbinden!!!
    //$rs = execute($sql, true, 'NoAccount');

	//hole alle angebote, die aelter oder genau 3 Monate alt sind
	$sql = "WHERE (UNIX_TIMESTAMP() - UNIX_TIMESTAMP(angebot.created)) >= ".$lastMail;
	       //8035200 sekunden entsprechen 3 monaten
	       //UNIX_TIMESTAMP gibt datum in sekunden zurueck

	$rs = execute($sql, false, 'LastMail');

	//loesche nach dem versenden der mails 'LastMail' alle angebote, die aelter oder gleich 3 monate sind
	$sql = "DELETE angebot "
	       ."FROM angebot "
	       ."JOIN kliniken ON kliniken.klinik_id = angebot.klinik_id "
	       ."WHERE (UNIX_TIMESTAMP() - UNIX_TIMESTAMP(angebot.created)) >= ".$lastMail
	       ." AND kliniken.email != ''  AND kliniken.email != 'nn@nn.de'";
	       //8035200 sekunden entsprechen 3 monaten; 
	       //UNIX_TIMESTAMP gibt datum in sekunden zurueck

    //TODO: einbinden!!!
	//$rs = execute($sql, true, 'LastMail');

	//hole alle angebote, die (3 monate - 2 tage) alt sind
	$sql = "WHERE (UNIX_TIMESTAMP() - UNIX_TIMESTAMP(angebot.created)) < ".$secondMail['left']
	       ." AND (UNIX_TIMESTAMP() - UNIX_TIMESTAMP(angebot.created)) > ".$secondMail['right'];
           //8035200 sekunden entsprechen 3 monaten
           //UNIX_TIMESTAMP gibt datum in sekunden zurueck

    $rs = execute($sql, false, 'SecondMail');

	//hole alle angebote, die (3 monate - 7 tage) alt sind
    $sql = "WHERE (UNIX_TIMESTAMP() - UNIX_TIMESTAMP(angebot.created)) < ".$firstMail['left']
           ." AND (UNIX_TIMESTAMP() - UNIX_TIMESTAMP(angebot.created)) > ".$firstMail['right'];
           //8035200 sekunden entsprechen 3 monaten
           //UNIX_TIMESTAMP gibt datum in sekunden zurueck

    $rs = execute($sql, false, 'FirstMail');

	/*
	 * fuehrt query aus und gibt mysqli resultobjekt zurueck
	 */
	function execute($where, $delete = false, $mailType = 'LastMail'){
		global $connect;
		$mail = new MyMail();

		$sql = "SELECT kliniken.ort, kliniken.plz, kliniken.strasse, kliniken.klinik_name, kliniken.ansprechperson as kansprechperson, "
		       ."kliniken.email as kmail, taetigkeitsbereich.bezeichnung as Taetigkeitsbereich, angebot.*, "
               ."CAST( GROUP_CONCAT( position.bezeichnung ORDER BY position.bezeichnung SEPARATOR ',' ) AS CHAR( 10000 ) CHARACTER SET utf8 ) AS angebote "
               ."FROM angebot "
               ."JOIN angebot2pos AS a2p ON angebot.angebot_nid = a2p.angebot_nid "
               ."JOIN position ON a2p.position_nid = position.position_nid "
               ."JOIN taetigkeitsbereich ON angebot.taetigkeitsbereich_nid = taetigkeitsbereich.taetigkeitsbereich_nid "
               ."JOIN kliniken ON kliniken.klinik_id = angebot.klinik_id "
               .$where
//09.02.2012: AND kliniken.email != 'nn@nn.de' aus where klausel genommen, weil ueber flag entschieden wird, ob geloescht wird, oder nicht
               ." AND kliniken.email != '' AND angebot.erase = '1'"
               ." GROUP BY angebot.angebot_nid";

        if($delete){
        	$sql = $where;
        }

		//fuehre query aus
	    $rs = mysqli_query($connect, $sql);

	    //beende script, wenn ein fehler auftritt
	    if (!$rs) die ("DB Fehler in SQL $sql ".mysqli_error($connect));

	    //gehe alle zeilen durch
        while($res = mysqli_fetch_array($rs)){
	        //setze norepeating flag auf 0
	        $sql = "UPDATE angebot SET renewed = '0' WHERE angebot_nid = ".$res['angebot_nid'];
	        //fuehre query aus
            mysqli_query($connect, $sql);
            //versende mail an klinik, dass das angebot geloescht wurde
            $mail->mailSituations($res, $mailType);
        }
	}
?>